Colin Walters [Fri, 17 Dec 2010 13:03:01 +0000 (08:03 -0500)]
gdk: Fix GdkWindowFilter internal refcounting
Running gnome-shell under valgrind, I saw the attached invalid write.
Basically we can destroy a window during event processing, and the old
window_remove_filters simply called g_free() on the filter, ignoring
the refcount. Then later in event processing we call filter->refcount--,
which is writing to free()d memory.
Fix this by centralizing list mutation and refcount handling inside
a new shared _gdk_window_filter_unref() function, and using that
everywhere.
==13876== Invalid write of size 4
==13876== at 0x446B181: gdk_event_apply_filters (gdkeventsource.c:86)
==13876== by 0x446B411: _gdk_events_queue (gdkeventsource.c:188)
==13876== by 0x44437EF: gdk_display_get_event (gdkdisplay.c:410)
==13876== by 0x446B009: gdk_event_source_dispatch (gdkeventsource.c:317)
==13876== by 0x4AB7159: g_main_context_dispatch (gmain.c:2436)
==13876== by 0x4AB7957: g_main_context_iterate.clone.5 (gmain.c:3087)
==13876== by 0x4AB806A: g_main_loop_run (gmain.c:3295)
==13876== by 0x8084D6B: main (main.c:722)
==13876== Address 0x1658bcac is 12 bytes inside a block of size 16 free'd
==13876== at 0x4005EAD: free (vg_replace_malloc.c:366)
==13876== by 0x4ABE515: g_free (gmem.c:263)
==13876== by 0x444BCC9: window_remove_filters (gdkwindow.c:1873)
==13876== by 0x4454BA3: _gdk_window_destroy_hierarchy (gdkwindow.c:2043)
==13876== by 0x447BF6E: gdk_window_destroy_notify (gdkwindow-x11.c:1115)
==13876== by 0x43588E2: _gtk_socket_windowing_filter_func (gtksocket-x11.c:518)
==13876== by 0x446B170: gdk_event_apply_filters (gdkeventsource.c:79)
==13876== by 0x446B411: _gdk_events_queue (gdkeventsource.c:188)
==13876== by 0x44437EF: gdk_display_get_event (gdkdisplay.c:410)
==13876== by 0x446B009: gdk_event_source_dispatch (gdkeventsource.c:317)
==13876== by 0x4AB7159: g_main_context_dispatch (gmain.c:2436)
==13876== by 0x4AB7957: g_main_context_iterate.clone.5 (gmain.c:3087)
https://bugzilla.gnome.org/show_bug.cgi?id=637464
Kristian Rietveld [Fri, 17 Dec 2010 15:51:42 +0000 (16:51 +0100)]
Fix size allocation for list mode combo box
Kristian Rietveld [Fri, 17 Dec 2010 15:30:15 +0000 (16:30 +0100)]
Set cell_view to NULL immediately after unparenting
This way we are sure no invalid pointer will be accessed in between.
Kristian Rietveld [Fri, 17 Dec 2010 12:15:27 +0000 (13:15 +0100)]
Check if popup_window is mapped, not popup_widget
Before hide_all was used on popup_window, which means popup_widget
was also unmapped. This is now no longer the case. This fixes
subsequent pop ups for appears-as-list == 1.
Benjamin Otte [Fri, 17 Dec 2010 14:41:59 +0000 (15:41 +0100)]
selection: constify GtkSelectionData getters
Carlos Garnacho [Fri, 17 Dec 2010 02:17:13 +0000 (03:17 +0100)]
Remove *_set_extension_events() and old API to query devices.
The old functions to get core pointer and devices list are gone as
well. This slice is entirely replaced internally by multidevice
handling and may just go.
Bastien Nocera [Fri, 10 Dec 2010 15:05:50 +0000 (15:05 +0000)]
gtk: Add symbolic property for GtkVolumeButton
When the application prefers symbolic icons, avoids
having to reimplement the button in the software itself.
https://bugzilla.gnome.org/show_bug.cgi?id=636969
Kjartan Maraas [Fri, 17 Dec 2010 12:09:58 +0000 (13:09 +0100)]
Updated Norwegian bokmål translation
Tristan Van Berkom [Fri, 17 Dec 2010 09:15:08 +0000 (18:15 +0900)]
Fixed gtk_entry_set_icon_tooltip_text & markup to not crash
Setting this property before the icon is actually set was
resulting in a crash (found by way of Glade bug 606103).
Tristan Van Berkom [Fri, 17 Dec 2010 06:35:21 +0000 (15:35 +0900)]
Fixed parameter names in gtkcellarea.h for gtk-doc parsing.
Tristan Van Berkom [Fri, 17 Dec 2010 06:26:28 +0000 (15:26 +0900)]
Fixed documentation of GtkCellLayout <cell-packing>
Mention that it's safe to use <cell-packing> tag for any GtkCellLayout
in GTK+ since they *all* use an underlying GtkCellArea (at least they
will once the other branches land).
Tristan Van Berkom [Fri, 17 Dec 2010 06:25:15 +0000 (15:25 +0900)]
Merge branch 'master' into treeview-refactor
Conflicts:
tests/testtreeedit.c
Kristian Rietveld [Thu, 16 Dec 2010 22:33:42 +0000 (23:33 +0100)]
Avoid recursion in do_validate_rows()
I have never really liked the updates done to the adjustments in
do_validate_rows() and other validation functions. But it is really
required. I have to come up with a real solution to this one day.
Kristian Rietveld [Thu, 16 Dec 2010 21:42:10 +0000 (22:42 +0100)]
Should pass inner_area to cell in gtk_cell_area_activate_cell()
Kristian Rietveld [Thu, 16 Dec 2010 11:33:00 +0000 (12:33 +0100)]
Clip focus rectangle to background area
Kristian Rietveld [Thu, 16 Dec 2010 11:26:18 +0000 (12:26 +0100)]
Fix background area calculation in RTL mode
Javier Jardón [Thu, 16 Dec 2010 00:16:00 +0000 (00:16 +0000)]
docs: gtknotebook.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:56:28 +0000 (23:56 +0000)]
gtk/gtkclipboard.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:56:14 +0000 (23:56 +0000)]
gtk/gtkcolorbutton.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:55:59 +0000 (23:55 +0000)]
gtk/gtkcolorsel.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:55:45 +0000 (23:55 +0000)]
gtk/gtkdnd.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:55:31 +0000 (23:55 +0000)]
gtk/gtkfilechooserbutton.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:55:18 +0000 (23:55 +0000)]
gtk/gtkfilechooserdefault.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:55:04 +0000 (23:55 +0000)]
gtk/gtkiconview.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:54:49 +0000 (23:54 +0000)]
gtk/gtklinkbutton.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:54:22 +0000 (23:54 +0000)]
gtk/gtknotebook.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:53:00 +0000 (23:53 +0000)]
gtk/gtktextbuffer: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:52:40 +0000 (23:52 +0000)]
gtk/gtktextview.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:52:26 +0000 (23:52 +0000)]
gtk/gtktoolpalette.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:52:02 +0000 (23:52 +0000)]
gtk/gtktreednd.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:51:23 +0000 (23:51 +0000)]
gtk/gtktreeview.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:57:13 +0000 (23:57 +0000)]
demos/gtk-demo/clipboard.c: Use accessor functions to access GtkSelectionData
Javier Jardón [Wed, 15 Dec 2010 23:47:45 +0000 (23:47 +0000)]
tests: Use accessor functions to access GtkSelectionData
Kristian Rietveld [Wed, 15 Dec 2010 23:07:08 +0000 (00:07 +0100)]
Clip to cell_area when rendering cell content
This fixes a GTK+ 3.0 regression. In GTK+ 2, the render method
on GtkCellRenderer had a expose_area parameter, typically set to
cell_area. This parameter was used for clipping cell content to be
rendered to the cell area (and thus clipping to within the focus
rectangle). During the rendering clean up this parameter was removed
and no clipping put back into place.
Since expose_area was usually equal to cell_area anyway, it does not make
sense to reintroduce the expose_area parameter. Instead, we do clipping at
two levels:
- in gtk_cell_renderer_render() we clip to background_area. We cannot
clip to cell_area here because we want to allow cell renderers to
render in the background area (e.g. background color/effect).
- cell renderers should clip to clip_area when rendering cell
content individually (as they had to individually clip to expose_region
before).
Kristian Rietveld [Wed, 15 Dec 2010 22:45:04 +0000 (23:45 +0100)]
Revisit "Handle clicks in indentation area"
Check (x, y) is inside background area. If yes, continue processing
and clamp the coordinates into cell area. This way we will properly
handle getting a cell (which is only used for setting the focus cell)
for clicks in the indentation area (in LTR and RTL mode) and clicks
in the focus rectangle area in case focus-line-width is large.
Jorge González [Wed, 15 Dec 2010 21:00:00 +0000 (22:00 +0100)]
Updated Spanish translation
Kristian Rietveld [Wed, 15 Dec 2010 20:36:47 +0000 (21:36 +0100)]
Make testtreeview handle RTL environment variable for testing
Kristian Rietveld [Wed, 15 Dec 2010 20:31:35 +0000 (21:31 +0100)]
RTL fix for gtk_tree_view_focus_to_cursor()
Kristian Rietveld [Wed, 15 Dec 2010 20:27:40 +0000 (21:27 +0100)]
No need to correct direction for rtl, GtkCellArea takes care of that
Kristian Rietveld [Wed, 15 Dec 2010 20:22:35 +0000 (21:22 +0100)]
Make testcellarea handle RTL environment variable for testing
Kristian Rietveld [Wed, 15 Dec 2010 20:17:27 +0000 (21:17 +0100)]
Correct calculation of the cell focus rectangle
The cell's focus rectangle is located around the cell's aligned area.
To get to the correct coordinates for this rectangle, we have to subtract
focus_line_width from the found aligned_area.
Carlos Garnacho [Wed, 15 Dec 2010 14:27:49 +0000 (15:27 +0100)]
Remove debug messages from GdkDevice
Benjamin Otte [Wed, 15 Dec 2010 13:29:37 +0000 (14:29 +0100)]
tests: Hardcode testinput colors instead of trying to use GtkStyle
Makes it work with new themeing APIs.
Benjamin Otte [Wed, 15 Dec 2010 13:29:04 +0000 (14:29 +0100)]
tests: Make testiconview-keynav set its custom style using CSS.
Benjamin Otte [Wed, 15 Dec 2010 13:25:19 +0000 (14:25 +0100)]
cssprovider: Explode if we fail to parse the default CSS
This can only happen if somebody really messed up with a checkin, and in
that case we want to explode early.
Benjamin Otte [Wed, 15 Dec 2010 11:44:26 +0000 (12:44 +0100)]
gail: Fix for new style code
Benjamin Otte [Wed, 15 Dec 2010 11:44:16 +0000 (12:44 +0100)]
xim: Fix for new style code
Benjamin Otte [Wed, 15 Dec 2010 11:28:14 +0000 (12:28 +0100)]
gtkrc: Remove unused code
Makes gcc happy.
Benjamin Otte [Wed, 15 Dec 2010 11:14:51 +0000 (12:14 +0100)]
gtk-demo: gtk_widget_render_icon() => gtk_widget_render_icon_pixbuf()
Benjamin Otte [Wed, 15 Dec 2010 11:08:01 +0000 (12:08 +0100)]
tests: gtk_widget_render_icon() => gtk_widget_render_icon_pixbuf()
Benjamin Otte [Wed, 15 Dec 2010 11:04:52 +0000 (12:04 +0100)]
tests: gtk_widget_render_icon() => gtk_widget_render_icon_pixbuf()
Benjamin Otte [Wed, 15 Dec 2010 11:04:15 +0000 (12:04 +0100)]
tests: gtk_widget_render_icon() => gtk_widget_render_icon_pixbuf()
Benjamin Otte [Wed, 15 Dec 2010 11:03:46 +0000 (12:03 +0100)]
tests: gtk_widget_render_icon() => gtk_widget_render_icon_pixbuf()
Benjamin Otte [Wed, 15 Dec 2010 11:03:04 +0000 (12:03 +0100)]
dnd-quartz: gtk_widget_render_icon() => gtk_widget_render_icon_pixbuf()
Benjamin Otte [Wed, 15 Dec 2010 10:52:33 +0000 (11:52 +0100)]
gdk: Don't use NULL for integers
Florian Müllner [Wed, 15 Dec 2010 11:52:16 +0000 (12:52 +0100)]
Complete renaming of gdk_enable_multidevice()
The function was renamed in commit
c4a5c2ed4, but some places were
missed, most notably the public header.
Benjamin Otte [Wed, 15 Dec 2010 09:33:02 +0000 (10:33 +0100)]
size-request: Clamp size requests to screen size
Size requests should only ever need to return the screen's width/height
and max. This way, potentially large widgets (tree view or icon view)
don't need to do so many computations, but can stop when their computed
size has reached the screen size.
Matthias Clasen [Wed, 15 Dec 2010 03:21:39 +0000 (22:21 -0500)]
Optimize gdk_window_set_shape_combine_region
When setting no shape on an unshaped window, nothing changes,
so return early instead of recomputing lots of visibility
information.
Pointed out by Owen Taylor in bug 637156.
Matthias Clasen [Wed, 15 Dec 2010 03:15:33 +0000 (22:15 -0500)]
Remove gtk_widget_reset_shapes
See bug 637155.
Carlos Garnacho [Wed, 15 Dec 2010 02:33:01 +0000 (03:33 +0100)]
Improve docs for gtk_widget_reset_style().
Document that it may be needed in containers when
children are reordered.
Carlos Garnacho [Mon, 13 Dec 2010 11:28:18 +0000 (12:28 +0100)]
Add gdk_window_[gs]et_source_events()
This function will enable events for all devices of a given
GdkInputSource, either these available at the time of the call,
or these that are connected in the future.
Carlos Garnacho [Mon, 13 Dec 2010 11:20:34 +0000 (12:20 +0100)]
xi2: Improve device hierarchy handling
The xi2 device manager now handles slaves being detached and/or
attached to a master.
gdk_device_list_slaves() has been added so it is possible to
know how slaves relate with masters. The other backends (X11 and not)
don't neeed to to anything special here since their hierarchy is
fully flat.
Carlos Garnacho [Wed, 15 Dec 2010 01:34:42 +0000 (02:34 +0100)]
Emit GdkDevice::changed when the slave device being used changes
When the slave device changes, the master takes the shape of the
new one, modifying its axes, this signal is more useful to catch
this situation than the n-axes property
Carlos Garnacho [Mon, 13 Dec 2010 01:12:43 +0000 (02:12 +0100)]
Add gdk_event_[gs]et_source_device().
This function may be used to know the hardware device that triggered
an event, it could resort to the master device in the few cases there's
not a direct hardware device to relate to the event (i.e.: crossing events
due to grabs)
Carlos Garnacho [Sun, 12 Dec 2010 23:55:19 +0000 (00:55 +0100)]
Enable XI2 by default
gdk_enable_multidevice() has been replaced with gdk_disable_multidevice(),
so applications may call that function if they want to go back at the
previous behavior.
There would be usually little reasons to call that function, unless the
application is doing X calls itself that count on old fashioned core
devices.
Carlos Garnacho [Tue, 14 Dec 2010 19:26:52 +0000 (20:26 +0100)]
Make GtkTextView use GtkStyleContext
GtkTextAppearance still uses GdkColors, even though it could
switch to GdkRGBA with little hassle as it seems sheldomly used
out there.
Diego Escalante Urrelo [Tue, 14 Dec 2010 17:22:35 +0000 (12:22 -0500)]
docs: fix link failure on gtk-doc scanner binaries
Bug #637243
Diego Escalante Urrelo [Tue, 14 Dec 2010 20:46:51 +0000 (15:46 -0500)]
gtkstylecontext: fix typos in annotations
Fixes Bug #637256
Benjamin Otte [Tue, 14 Dec 2010 20:10:22 +0000 (21:10 +0100)]
docs: Redo drawing area drawing docs
They don't seem to have been updated for a long time...
Tristan Van Berkom [Tue, 14 Dec 2010 06:52:40 +0000 (15:52 +0900)]
Make GtkCellArea independantly GtkBuildable.
Simply use the GtkCellLayoutIface hooks for this.
William Jon McCann [Fri, 10 Dec 2010 06:27:55 +0000 (01:27 -0500)]
Update about dialog design to not use a swarm of dialogs
This is a modernization of the GtkAboutDialog look done
by William Jon McCann. The most noteworthy changes are:
- no more subdialogs
- show license short text in the main dialog
- less verbose email link formatting
- the dialog is modal to its transient parent
Carlos Garnacho [Tue, 14 Dec 2010 01:29:57 +0000 (02:29 +0100)]
Make GtkInfoBar use GtkStyleContext
All colors are defined now in the default css, and classes have
been added so the bars are fully themeable (as opposed to
gtk_widget_override_*, which require changing the color map itself)
Carlos Garnacho [Mon, 13 Dec 2010 21:42:05 +0000 (22:42 +0100)]
Add headers/docs changes for gtk_theming_engine_get_font()
Apparently I didn't git add enough...
Carlos Garnacho [Mon, 13 Dec 2010 20:36:49 +0000 (21:36 +0100)]
Add getter for font description in GtkThemingEngine
This function is analogous to gtk_style_context_get_font().
Carlos Garnacho [Mon, 13 Dec 2010 19:04:40 +0000 (20:04 +0100)]
Make GtkExpander use GtkStyleContext
Carlos Garnacho [Mon, 13 Dec 2010 12:46:21 +0000 (13:46 +0100)]
GtkSpinButton: Use GtkStyleContext
Carlos Garnacho [Mon, 13 Dec 2010 12:43:52 +0000 (13:43 +0100)]
Port GtkRange widgets to GtkStyleContext
Carlos Garnacho [Mon, 13 Dec 2010 12:39:53 +0000 (13:39 +0100)]
GtkNotebook: Use GtkStyleContext.
Carlos Garnacho [Mon, 13 Dec 2010 12:37:40 +0000 (13:37 +0100)]
GtkEntry: Use GtkStyleContext.
Carlos Garnacho [Mon, 13 Dec 2010 11:44:29 +0000 (12:44 +0100)]
GtkCssProvider: Make selectors applying from the topmost widget rank higher
For example, for an entry within a notebook, previously these 2 rules would
have the same weight:
.entry {}
.notebook {}
Now ".entry" will rank higher than ".notebook" for the GtkEntry, further
specific selectors such as:
.notebook .entry {}
still get a higher score than the previous ones.
Carlos Garnacho [Mon, 13 Dec 2010 11:38:37 +0000 (12:38 +0100)]
GtkThemingEngine: Render tabs background in the correct direction.
The cairo context has been already rotated, so using GTK_JUNCTION_BOTTOM
is expected to be used there.
Carlos Garnacho [Mon, 13 Dec 2010 11:37:40 +0000 (12:37 +0100)]
GtkThemingEngine: handle expander transitions to active, and rtl
Carlos Garnacho [Mon, 13 Dec 2010 11:36:42 +0000 (12:36 +0100)]
GtkThemingEngine: remove unused variable
Carlos Garnacho [Sun, 12 Dec 2010 23:27:24 +0000 (00:27 +0100)]
Fix coalescing of state animation areas for multiple window widgets.
Coordinates needed to be translated relative to the window position
in within the widget.
Paolo Borelli [Sun, 5 Dec 2010 18:40:13 +0000 (19:40 +0100)]
Add convenience function for the font description.
Tristan Van Berkom [Mon, 13 Dec 2010 07:27:36 +0000 (16:27 +0900)]
Fixed an error in my last commit in gtk_cell_area_box_context_copy().
Tristan Van Berkom [Mon, 13 Dec 2010 06:58:07 +0000 (15:58 +0900)]
Added gtk_entry_completion_new_with_area()
Tristan Van Berkom [Mon, 13 Dec 2010 06:43:58 +0000 (15:43 +0900)]
Updated some docs and gtk.symbols file for new apis
Added gtk_cell_area_context_get_preferred_height_for_width and
width_for_height & gtk_cell_area_copy_context() to gtk.symbols
and gtk3-sections.txt (also finished up documenting those apis).
Tristan Van Berkom [Mon, 13 Dec 2010 06:37:12 +0000 (15:37 +0900)]
Fixed gtk_cell_area_box_context_copy() to also copy it's allocations.
Kristian Rietveld [Sun, 12 Dec 2010 16:32:59 +0000 (17:32 +0100)]
Handle clicks in indentation area
For this case, we want to set focus on the first cell in the column.
Tristan Van Berkom [Fri, 10 Dec 2010 07:22:06 +0000 (16:22 +0900)]
Make GtkTreeView explicitly focus the first cell in the first column when grabbing focus
When focus is initially grabbed and there is no focus column, when selecting
the first column for focus, further explicitly focus into the first cell
using gtk_cell_area_focus().
Tristan Van Berkom [Fri, 10 Dec 2010 07:12:02 +0000 (16:12 +0900)]
Fixed GtkTreeView to give focus back to the last focued cell when hitting
the edge.
When focusing left/right or up/down inside GtkCellArea, now we save what
was the last focused cell and if we hit the side (or top or bottom) of
the view we then restore focus to the last focused cell.
Tristan Van Berkom [Thu, 9 Dec 2010 09:21:32 +0000 (18:21 +0900)]
Add an editable cell to testverticalcells showing functional vertical focus navigation.
Tristan Van Berkom [Thu, 9 Dec 2010 09:01:16 +0000 (18:01 +0900)]
Modified gtk_tree_view_move_cursor_up_down to move focus inside the cell area
This currently leaves us the problem of maintaining the right cell in
focus for horizontal areas, the solution for that comming in the
next patch.
Tristan Van Berkom [Thu, 9 Dec 2010 08:50:05 +0000 (17:50 +0900)]
Removing gtk_tree_view_move_focus_column() and only calling gtk_cell_area_focus()
This function did alot of nothing, gtk_cell_area_focus() simply returns whether
the focus stays in the area (column) or not, seems not to cause regressions to
just call it directly instead.
Tristan Van Berkom [Sun, 12 Dec 2010 15:18:00 +0000 (00:18 +0900)]
Added apis to GtkCellArea for GtkIconView purposes.
Added a few apis,
- GtkCellAreaContext get_preferred_height_for_width &
width for height apis and vfuncs, this lets the icon view
request the collective (and aligned) height for width for
a said row.
- gtk_cell_area_copy_context() this creates a duplicate of
an already created and requested context, this way the icon
view uses a global context to request the widths of all rows
and then makes a copy with all the stored alignments and
uses a separate copy to calculate the height and alignments
of each row separately.
Kristian Rietveld [Sun, 12 Dec 2010 14:22:49 +0000 (15:22 +0100)]
Welcome _gtk_tree_view_column_get_cell_at_pos to the second dimension
Kristian Rietveld [Sun, 12 Dec 2010 14:09:27 +0000 (15:09 +0100)]
Make gtk_tree_view_get_cell_area() aware of row separators
Kristian Rietveld [Sun, 12 Dec 2010 14:03:33 +0000 (15:03 +0100)]
Add unit test for row separator height
Kristian Rietveld [Sun, 12 Dec 2010 13:34:26 +0000 (14:34 +0100)]
Do not enforce a minimum of expander_size in gtk_tree_view_get_row_height
Instead this is now enforced in gtk_tree_view_get_cell_area_height().
There are rows for which a height in between 0 and expander_size is
allowed, for example separator rows.